'''
定义一个Man类
属性有 name，power,分别代表体力值和man的名子，体力值默认为100；
方法有
1.) go(l) //行走的方法，如果体力值为0，则输出不能行走的信息
2.) eat(n); //吃的方法，参数是补充的血量，将 n的值加到属性power中，power的值最大为100，
3.) hurt();//每受到一次伤害，体力值-10，体力值最小不能小于0
2021-8-13 Nasa
'''
import time


class Man:
    def __init__(self, name):
        self.name = name
        self.power = 100

    def go(self, l):
        if self.power >= l * 0.1:
            self.power -= l * 0.1
            print(f'已行走{l}步,体力值{self.power}')
        else:
            print('无法行走,需要吃饭来补充体力值')

    def eat(self, n):
        if n <= 100:
            self.power += n
            print('正在吃饭')
            time.sleep(2)
            print(f'吃饭成功!目前体力值{self.power}')
        else:
            print('太多了,无法吃饭')

    def hurt(self):
        self.power -= 5
        if self.power < 0:
            self.power = 0
            time.sleep(5)
            print('体力值不足,昏迷了,需要吃饭来补充体力值')
        else:
            print(f'受伤了,目前体力值{self.power}')

    def __str__(self):
        return f'name:{self.name},power:{self.power}'


class Young(Man):
    def duanlian(self, n):
        if n <= 300:
            self.power += n
            print(f'{self.name}正在锻炼...')
            time.sleep(2)
            print(f'已锻炼,目前体力值{self.power}')
        else:
            print('锻炼强度太大,无法锻炼')


if __name__ == '__main__':
    myman = Man('wo_man')
    myman.go(100)
    myman.eat(90)
    myman.eat(100)
    print(myman.__dict__)
    youngman = Young('young_man')
    youngman.eat(20)
    youngman.duanlian(20)
    print(youngman)
    mychild = Child('mychild')
